在我自製的記帳軟件的 Schema 之中, 在考慮了一般記帳的需要, Micosoft Access 的限制和開發難度後, 我只集中地使用了幾種 Datatype, 它們包括了: TINYINT, INT, DECIMAL, VARCHAR, DATE, 及 TIMESTAMP. 或許我應該承認懶惰也是一大因素, 可是為了完成這個唐吉訶德式的壯舉, 我是看書看 Blog 都看到眼睛壊了. 為了讓大家進一步理解 Datatype 的選擇與設計考量, 以下我將會逐一簡單的說明一下
TINYINT ( 1 byte ) - UNSIGNED 數值範圍從 0 到 255
這個 TINYINT 主要是用來作為 "選項數值", 例如 YES/NO, 表單種類及公司類別等. 記著一點, 由於此 Datatype 的數值範圍很小, 所以只適用一些你可以控制而不會自然增長的地方.
INT ( 4 bytes ) - UNSIGNED 數值範圍從 0 到 4,294,967,295
這個 INT 主要是用來作為 "編號數值", 例如表單編號, 客戶編號及產品編號等. 由於此 Datatype 的數值範圍比較大, 所以適用於一些會自然增長但不需要小數位的地方.
DECIMAL ( M+2 ) - 十進位範圍: 點數位前0到64, 點數位後0到30
這個 DECIMAL 主要是用來作為 "絕對數值", 例如金額及數量等. 由於此 Datatype 的數值範圍很大, 在設置適當的前提下你不會遇到任何限制, 就算你的公司是香港中央結算有限公司都沒有問題 (理論上). 有另一個 Datatype 跟 DECIMAL 很相似的就是 DOUBLE, 兩者的數值範圍都是一樣, 但是 DECIMAL 是一個固定數值 (Fixed), 而 DOUBLE 卻是一個浮點數值(Float). 在記帳中少不免總會有加減乘除的動作, 而在追求精準平衡的時候, 你可不會想在報表中出現一些微少的差異, 重複當年 Microsoft Excel 2007 的 Bug 吧. 為了準確性, DECIMAL 基本是你唯一的選擇.
VARCHAR ( M char's ) - 字數限制從 0 到 65,535 個單位元字母或符號 (中文字是雙位元)
這個 VARCHAR 主要是用來作為 "文字欄", 例如表單明細, 名稱及其他混合資料等.
DATE ( 3 bytes ) - 日期範圍從 "1000-01-01" 到 "9999-12-31"
這個 DATE 主要是用來作為 "日期欄", 例如表單日期及結算日期等.
TIMESTAMP ( 4 bytes ) - 範圍從 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
這個 TIMESTAMP 是一個系統自動生成的時間戳, 其一可以用來作為修復數據錯誤的依據, 另外還可以用作追蹤員工工作進度之用. (我是魔鬼...!)
以上六種 Datatype 基本上就是我那個自製記帳軟件的 Schema 的所用到的點線面定義, 如何組合它們就留待下一篇再說了.
bickyacc提到:
就算你的公司是香港中央結算有限公司都沒有問題
總於找到一款適合總裁用的記帳軟體了...
不能結算美國聯邦銀行嗎??....
bickyacc提到:
Micosoft Access
可惜,
何苦呢?
如果是web版,或是app版,應該sqlite3就夠用了!
難道用access拉UI嗎??
要記帳,好像excel+vba就很強大了!!
此帖重點是一個港人的一個理想(如果不是幻想),就現在來說,是比鑽石還難得的...
我也要給樓主加油打氣.
人因夢想而偉大.
努力堅持下去喔.
多謝樓上兩位大大鼓勵, 其實整個系統已經完成並運作中, 這個系列只是記錄當日開發時的想法而已. 大大有空的話可以到YOUTUBE看看.
**"timloo"**提到:
要記帳,好像excel+vba就很強大了!!
我不懂excel的
可能是.蓮花123..啃多了....
DBase IV